home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / graphics / plant0.zip / PLANT.DOC < prev    next >
Text File  |  1993-10-07  |  12KB  |  263 lines

  1. PLANT v0.50a (10/07/93)
  2. Copyright (c) 1993 by Robert Bryerton 
  3. CIS[73747,433] GRAPHDEV forum
  4. This program is freely distributable.
  5.  
  6.  
  7. ----------INTRODUCTION
  8. PLANT is a small utility used for creating 'organic' plant-like objects
  9. using a simple 'fractal' formula.  The generated output file can then be 
  10. used as an include file for the POV-Ray v1.0 and v2.0 or Polyray v1.6 
  11. raytracers.  It also writes CTDS input files. 
  12.  
  13.  
  14. ----------WHAT'S NEW
  15. v0.50a    Added POV-Ray v2.0 support
  16.           
  17.           Added cone output for (much) smoother appearance.
  18.           This option is NOT available for POV 1.0 output.
  19.           
  20.           New command line switches...NOTE that some have changed
  21.           
  22.           Added ability to output only parts of plant
  23.           
  24.           Refined texture writing methods... you can now specify if you want
  25.           to use 1 'global' texture (to image or color map, for example)
  26.           instead of the default 4 colors.
  27.           
  28. v0.40a    original program released                              
  29.  
  30.  
  31. ----------FEATURES
  32. 2D 'wire-frame' display of object while it is being created.
  33.     This allows you to try out many different combinations of parameters
  34.     without having to render each time to see the object. Pretty primitive,
  35.     but it works. Requires VGA or better. Display is optional.
  36.  
  37. Nested bounding boxes.
  38.     This speeds up renderering time dramatically using POV 1.0 .  I've 
  39.     also gotten 6 to 10% increases in speed with Polyray in addition
  40.     to using the autobounding feature in Polyray. This option must be
  41.     specified on the command line now.  Note that if you are using
  42.     POV 2.0, the object will render MUCH faster WITHOUT using the
  43.     bounding box option.
  44.  
  45.  
  46. ----------HARDWARE REQUIREMENTS
  47. 80286 or higher, with or without a math coprocessor.  If the program senses
  48. one, it will be used, speeding execution by about 300%.  This is not really
  49. an issue as the 'typical' output file takes about 10 seconds to generate.
  50. See below for typical timings.
  51.  
  52.  
  53. ----------FILES INCLUDED
  54.     DESERT.PI             A Polyray scene file...just extra junk basically!
  55.     PLANT.PI              Basic Polyray scene file for default object    
  56.     PLANT.POV             Basic POV-Ray 2.0 scene file for default object
  57.     PLANT_1.POV           Basic POV-Ray 1.0 scene file for default object
  58.     PLANT.DOC             This file
  59.     PLANT.EXE             DOS executable program
  60.     PLANT.MAK             MS C++ v8.00 make file
  61.     PLANT050.CPP          Source code
  62.  
  63.  
  64. ----------PROGRAM USAGE
  65. PLANT is easy to use since it is interactive. Just type PLANT at the DOS 
  66. prompt and enter the parameters required. Most of the questions are straight
  67. forward.  The parameters requested are briefly defined as follows with
  68. the defaults show in brackets:
  69.  
  70. 1       POV 2.0
  71. 2       POV 1.0
  72. 3       Polyray
  73. 4       CTDS  
  74.  
  75. Number for format? [1]:
  76.    Simple enough. Pick a number. Default is POV 2.0
  77.  
  78. Ouput filename? [plant.inc]:   
  79.    Enter the output file name.
  80.  
  81. Union name? [plant]:
  82.    The name of the output file 'include' object.
  83.  
  84. Number of branches ? [4]:
  85.    This will make 4 long branches, each subdividing into 4 smaller ones,
  86.    and so on. Values larger than 7 can created VERY large files. You can
  87.    control the division with the "Divide branches by" parameter described 
  88.    below.     
  89.  
  90. Maximum # of spheres per branch ? [60]:
  91.    This is the starting value for the # of spheres in each branch, 
  92.    which then will be divided by the "Divide branches by" parameter 
  93.    which is described below. Note that if you are using cone output
  94.    (default), roughly 1 cone will be generated for each sphere.
  95.    This only slows down the render by about 15% for POV 2.0 and 22%
  96.    for Polyray compared to using spheres only (-o...see CL options below).
  97.  
  98. Minimum # of spheres per branch ? [1]:
  99.    This number will limit the minimum size of any new segments created.
  100.    Enter higher values for less 'detail'.
  101.  
  102. Global scaling  ? [1.0]:
  103.     This scales the overall size of the plant. The default size is about 
  104.     10 units in each direction. If you are using POV-Ray v1.0, see the
  105.     note on scaling below.
  106.    
  107. ****************************EXTENDED OPTIONS 
  108.                  (-e...see command line options below)
  109.                                                       
  110. Disregard branches longer than ? [60]:    
  111.     This option allows you to start the plant at a 'level' other than the
  112.     'base'.  If you accept the default value for "Max # spheres" (above)
  113.     of 60, and then enter 60 for this parameter, the program would NOT
  114.     output ANY branches that are 60 spheres or 'longer'. This allows you
  115.     to out to output an object that looks like more than 1 plant.  NOTE that
  116.     you have to translate the object in the -Y direction as each branch is
  117.     where it would be if there was a full plant.  Experiment with this one.    
  118.     Default is the same value as "Max # spheres" (above), which will create
  119.     a complete plant.
  120.     
  121. Divide branches by ? [3.0]:
  122.     This controls the size of each new level of branches and the overall
  123.     detail of the object. If you use a value much smaller than the default
  124.     value of 3.0, the files can become very 'detailed', but HUGE.  If you
  125.     accept all defaults, the plant will consist of 4 60 sphere branches, each
  126.     having 4 20 sphere branches (60 / 3.0), each having 4 6 sphere branches
  127.     and so on. Note that the division is INTEGER, so the program will 'round'
  128.     off the numbers.
  129.  
  130. Radial distortion (PI * x)  ? [1.0]:     
  131.     This value is wired to PI, which is used to calculate the basic x z 
  132.     geometry of the plant.  You can get some interesting effects by entering 
  133.     values in the 0.7 to 0.9 range.
  134.     
  135. Branch rotation factor ? [1.0]:
  136.     This controls the rate and direction of the bending of the plant.
  137.     
  138. Overall noise factor ? [1.0]:
  139.     This controls the random variation of the path of the branches. Enter
  140.     a very low value, around 0.001, to see the plant with no X Z variation.
  141.     Values higher than 1.5 or so will created a very distorted shape.
  142.     
  143. Height scaling  ? [1.0]:
  144.     This is wired to the Y ('height') scaling of the shape. The default
  145.     height in the output file is about 10 units. Higher values will make
  146.     a tall and slim plant while lower values will make a short and wide plant.
  147.     
  148. Sphere scaling  ? [1.0]:
  149.     This value will scale EVERY sphere in the plant object by this amount.
  150.     Individual spheres range from 0.21 to 0.11 using the program defaults.
  151.     This looks good if you use cone output and enter a value of around 0.4
  152.     to 0.75, giving you a plant with very slim and smooth branches.
  153.  
  154.  
  155. ----------COMMAND LINE PARAMETERS
  156.  
  157. Usage: plant [options]
  158. Options:  -b    Write nested bounds in POV or Polyray output.
  159.           -d#   enables 2D (xz) display of plant... # is the graphics mode.
  160.                 0=no display  1=640x480  2=800x600  3=1024x768
  161.                 Default value is 0.
  162.           -e    Gives you a menu with an extended choice of options.
  163.           -o    Spheres ONLY (no cones) in output file. 
  164.           -p#   Where # is the precision of the output file numbers.
  165.                 Range is 3 - 9 with a default precision of 6 decimal places.
  166.           -s    Include all bounding stats in output file. (-b only)
  167.           -t    DO NOT write multiple textures in output file.
  168.  
  169. Defaults are: No bounding boxes.
  170.               No display.
  171.               No extended menus.
  172.               Write spheres and cones (spheres ONLY for POV 1.0)
  173.               Precision of 6 decimals in the output file.
  174.               No detailed bounding stats in the output file.
  175.               Use 4 color texture scheme.
  176.               
  177. Enter PLANT at the DOS prompt to accept the default command line parameters.
  178.               
  179. You can hit any key while the object is being generated and the program will
  180. end, but it will still write a partial (and usable) file. 
  181.  
  182.  
  183. ----------TIMING INFO
  184. The times shown below are for rendering the default object with a very low
  185. Noise factor (see above) for object shape consistency.  The images were
  186. rendered on a 386/40 with coprocessor and 8 Mb, using POV v1.0 (ibmicb),
  187. POV 2.0 (ibmicb), and Polyray v1.6a.  Image size was 320x240 using the 
  188. included scene files. 
  189.  
  190. Polyray 1.6a  00:06:44
  191. POV-Ray 1.0   00:16:08 (bounded)
  192. POV-Ray 2.0   00:04:32 (!)
  193.  
  194. The object consisted of 1,456 spheres.
  195. The defaults were used except for Overall Noise 0.0001 and -o (spheres only).
  196.  
  197.  
  198. ----------SCALING INFO
  199. I had problems using POV 1.0 if I'd scale the object smaller than around
  200. 1 or 2 units square. The object APPEARED to be clipped from the bounds, but 
  201. in 'reality' it wasn't.  If I scaled it up and moved the camera and light by 
  202. the same amount, the image would be fine.  I *believe* there is a problem 
  203. with POV 1.0, if you scale spheres to a very small size. I'm not sure if 
  204. this is POV's code or mine that's making this happen. 
  205.  
  206. This does not appear when the object is at or larger than the default output
  207. size. The default size is about 10 units square.  This does not seem to apply
  208. to Polyray or POV 2.0.
  209.                                       
  210.  
  211. ----------MISC. INFO
  212. There are a few differences in the output options depending on the 
  213. format you are using.  As stated earlier, the POV 1.0 option WILL NOT output
  214. cones.  It is very possible to implement but, what can I say, I got 2.0 and 
  215. so should you !!  It's so much more flexible and faster.  If you're still
  216. using 1.0, you MUST get 2.0 for the speed alone.
  217.  
  218. Polyray and POV 2.0 formats allow you to output without textures, allowing 
  219. YOU to specify a 'global' texture for the entire plant in the .POV (or .PI)
  220. file.  I feel this is a flexible option as it allows you to color or image 
  221. map the plant as a whole.  Previous versions of PLANT applied a separate
  222. 'copy' of the texture to each sphere (!) in each branch.   If you accept
  223. the default 4 color texture scheme, note that the texture is applied to each
  224. branch (union), instead of each sphere in each union.  I feel this is also a 
  225. better solution.   If you are using POV 1.0, this option will use the dark
  226. green texture for each branch (same method as 4 color).  This is because the
  227. plant is written as a COMPOSITE and you can not texture a composite as a 
  228. whole, only the individual 'objects' in a composite. (hurray for 2.0!!!)
  229.  
  230. The bounding box output is now optional, as POV 2.0 will render a union
  231. MUCH faster without the bounds.  If you're still using 1.0, then you should
  232. specify -b on the command line to enable bounding of the object, as 1.0 does
  233. not use autobounds as 2.0 does.  You can also use bounds for Polyray, but the
  234. speed increase is marginal, at best (approx. 6%).
  235.  
  236.  
  237. ----------COPYRIGHT STATEMENT
  238. PLANT is a freely distributable program.  There is no charge or
  239. registration fee associated with the use of PLANT. 
  240.  
  241. The author retains the copyright to the program and authorizes free
  242. distribution, but makes no guarantees or warranties with this program and 
  243. claims no responsibility for any damages or losses incurred through use 
  244. of this program.
  245.  
  246.  
  247. ---------MISC.
  248. PLANT.EXE v0.50a is written in MS C++ v8.00.  It is not at all optimized  
  249. as it is still in an early stage.  
  250.  
  251. I would like to thank Eric Barish, Dan Farmer, and Dan Richardson for their
  252. help and suggestions on the bounding issue.... Thanks a bunch, guys !!!
  253.  
  254. If you have any questions, comments, suggestions, or otherwise, please let 
  255. me know as I would like to hear them and possibly incorporate any ideas into
  256. a newer version.
  257.  
  258. Enjoy !
  259.  
  260. Rob Bryerton 
  261. CIS[73747,433] GRAPHDEV forum
  262.  
  263.